package com.month.train.member.config;

import org.mybatis.spring.annotation.MapperScan;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.core.env.Environment;

@SpringBootApplication
@ComponentScan("com.month")
// 集成MyBatis的代码，扫描下面的这个接口
@MapperScan("com.month.train.member.mapper")
public class MemberApplication {
    // 启动日志
    /*LoggerFactory.getLogger(MemberApplication.class):
    这是SLF4J（Simple Logging Facade for Java）日志框架的用法，
    用于获取当前类的日志记录器。LOG对象用于记录日志信息。*/
    private static final Logger LOG = LoggerFactory.getLogger(MemberApplication.class);

    public static void main(String[] args) {

        /*SpringApplication: 这是Spring Boot框架的核心类，用于启动Spring Boot应用程序。
        通过传递MemberApplication.class给SpringApplication的构造器，我们告诉Spring Boot
        从哪个类开始启动应用*/
        SpringApplication app = new SpringApplication(MemberApplication.class);
        /*app.run(args): 这个方法启动应用程序，并返回一个ConfigurableApplicationContext对象，
        这是一个Spring应用上下文，它包含所有的Spring Beans。同时，这个方法会阻塞直到应用程序关闭。*/
        /*Environment: 这是Spring框架中的一个接口，用于表示应用程序的运行时环境*/
        Environment env = app.run(args).getEnvironment();

        String contextPath = env.getProperty("server.servlet.context-path","");

        /*LOG.info(...): 这行代码用于记录日志信息*/
        LOG.info("启动成功");
        // 127.0.0.1是个环回地址，当在浏览器或其他网络客户端中输入 http://localhost 时，它实际上会解析到 127.0.0.1
        LOG.info("测试地址:\thttp:127.0.0.1:{}{}/hello",
                env.getProperty("server.port"),contextPath);
    }

}
